home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1991 / 01 / texttest.c < prev    next >
Text File  |  1990-10-31  |  4KB  |  149 lines

  1. /* texttest.c -- Listing 7. */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include "textbuf.h"
  6.  
  7. #define NROWS 3         /* Size of test buffer */
  8. #define NCOLS 8
  9. /*----------------------------------------------------------------------*/
  10. void printbuf( textbuf *b, int verify )
  11. {
  12.     /* Print the buffer. The cursor position is indicated by
  13.      * parenthesizing the buffer entry at the current cursor
  14.      * position. If "verify" is true, an error message is
  15.      * printed if the buffer does not hold its original
  16.      * contents (as set up in main()):  a b c d e f g h
  17.      *                                  i j k l m n o p
  18.      *                                  q r s t u v w x
  19.      */
  20.  
  21.     int i, row, col, startrow, startcol, expected;
  22.  
  23.     startrow = b_row(b);
  24.     startcol = b_col(b);
  25.  
  26.     expected = 0;
  27.     for( row = 0; row < NROWS; ++row )
  28.     {
  29.         for( col = 0; col < NCOLS; ++col )
  30.         {
  31.             b_setrc(b, row, col);
  32.             if( *b_current(b) == 'a' + expected++  ||  !verify )
  33.             {
  34.                 if( startrow == row && startcol == col )
  35.                     printf("(%c)", *b_current(b) );
  36.                 else
  37.                     printf(" %c ", *b_current(b) );
  38.             }
  39.             else
  40.                 printf("something's wrong\n");
  41.  
  42.             if( b_ateol(b) )
  43.             {
  44.                 if( b_ateob(b) )
  45.                     printf("    <- Last line");
  46.                 printf("\n");
  47.             }
  48.         }
  49.     }
  50.     b_setrc(b, startrow, startcol);
  51. }
  52. /*----------------------------------------------------------------------*/
  53. void valid_test( textbuf *b )
  54. {
  55.     int row, col;
  56.     printf("\nThese indexes (r,c) are invalid in a %d by %d buffer:\n",
  57.                                                 b_nrows(b), b_ncols(b) );
  58.     for( row = -1; row <= NROWS; ++ row )
  59.     {
  60.         for( col = -1; col <= NCOLS; ++ col )
  61.             if( !b_valid( b, row, col ) )
  62.                 printf( "(%2d,%2d) ", row, col );
  63.         printf("\n");
  64.     }
  65.     printf("\n");
  66. }
  67. /*----------------------------------------------------------------------*/
  68. void crlf_test( textbuf *b )
  69. {
  70.     printf("Issuing LF:\n");
  71.     b_lf( b );
  72.     printbuf(b, 0);
  73.  
  74.     printf("\nIssuing CR:\n");
  75.     b_cr( b );
  76.     printbuf(b, 0);
  77. }
  78. /*----------------------------------------------------------------------*/
  79. void clear_test( textbuf *b )
  80. {
  81.     printf("\nResetting cursor to (1,3):\n");
  82.     b_setrc(b, 1, 3 );
  83.     printbuf(b, 0);
  84.  
  85.     printf("\nDeleting three characters, using ' ' fill:\n" );
  86.     b_delete_c(b, 3, ' ');
  87.     printbuf(b, 0);
  88.  
  89.     printf("\nInserting three characters, using '.' fill:\n");
  90.     b_insert_c( b, 1, '.' );
  91.     b_insert_c( b, 2, '.' );
  92.     printbuf(b, 0);
  93.  
  94.     printf( "\nClearing entire line, '-' fill\n" );
  95.     b_clearline( b, '-' );
  96.     printbuf(b, 0);
  97.  
  98.     printf( "\nDeleting line 1, moving top text down, '+' fill:\n");
  99.     b_setrc(b, 1, 3 );
  100.     b_closeup(b, '+');
  101.     printbuf(b, 0);
  102.  
  103.     printf( "\nDeleting top line, moving bottom text up, '*' fill:\n");
  104.     b_setrc(b, 0, 3 );
  105.     b_closedown(b, '*');
  106.     printbuf(b, 0);
  107.  
  108.     printf( "\nOpening top line, pushing text down, '%' fill:\n");
  109.     b_opendown(b, '%');
  110.     printbuf(b, 0);
  111.  
  112.     printf( "\nOpening middle line, pushing text up, '#' fill:\n");
  113.     b_setrc(b, 1, 3 );
  114.     b_openup(b, '#');
  115.     printbuf(b, 0);
  116.  
  117.     printf( "\nClearing buffer, '@' fill:\n");
  118.     b_clearbuf(b,'@');
  119.     printbuf(b, 0);
  120. }
  121. /*----------------------------------------------------------------------*/
  122. main()
  123. {
  124.     int row, col, i;
  125.     textbuf *b;
  126.  
  127.     if( !(b = b_new( NROWS, NCOLS )) )
  128.         printf( "Can't allocate the textbuf\n" );
  129.  
  130.     /* Initialize buffer as if it's a 1-dimensional array.
  131.      * It's initialized to:     a b c d e f g h
  132.      *                          i j k l m n o p
  133.      *                          q r s t u v w x
  134.      */
  135.  
  136.     b_setrc(b,0,0);
  137.     for( i = 0; i < NROWS * NCOLS; ++i )
  138.         *b_advance( b ) = 'a' + i;
  139.  
  140.     b_setrc(b, 1, 4);
  141.     printbuf( b, 1 );
  142.  
  143.     valid_test( b );
  144.     crlf_test ( b );
  145.     clear_test( b );
  146.  
  147.     return 0;
  148. }
  149.